﻿#region
//Copyright (c) 2016-2022 北京网非科技有限公司(wfdot.com)
//
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in
//all copies or substantial portions of the Software.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//THE SOFTWARE.
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SumiaAccountBook.Biz
{
    public class ProjectObj  : IEditableObject
    {       

        public int Key { set; get; }

        public string Name { set; get; }

        private DateTime _StartDate;

        public string StartDate {
            set {
                if(!string.IsNullOrEmpty(value))
                {
                    DateTime tmp = DateTime.MinValue;
                    if (DateTime.TryParse(value, out tmp))
                    {
                        _StartDate = tmp;
                    }
                }
            }
            get
            {
                if(null!=this._StartDate&&DateTime.MinValue!=this._StartDate)
                {
                    return this._StartDate.ToString("yyyy-MM-dd");
                }
                return string.Empty;
            }
        }

        public int ContractSum { set; get; }

        private DateTime _EndDate;

        public string EndDate
        {
            set
            {
                if (!string.IsNullOrEmpty(value))
                {
                    DateTime tmp = DateTime.MinValue;
                    if (DateTime.TryParse(value, out tmp))
                    {
                        _EndDate = tmp;
                    }
                }
            }
            get
            {
                if (null != this._EndDate && DateTime.MinValue != this._EndDate)
                {
                    return this._EndDate.ToString("yyyy-MM-dd");
                }
                return string.Empty;
            }
        }

        public int Sum { set; get; }

        public int Status { set; get; }

        public string StatusName
        {
            get { return Biz.KVConstHelper.GetInstance().GetValue<Biz.KVProjectStatus>(this.Status); }
            set {this.Status = Biz.KVConstHelper.GetInstance().GetKey<Biz.KVProjectStatus>(value); }
        }

        public string Memo { set; get; }

        public List<string> StatusNames { set; get; }


        public ProjectObj(DataAccess.Entity.Project entity)
        {
            this.Key = entity.Key;
            this.Name = entity.Name;
            this._StartDate = entity.StartDate;
            this.ContractSum = entity.ContractSum;
            this._EndDate = entity.EndDate;
            this.Sum = entity.Sum;
            this.Status = entity.Status;
            this.Memo = entity.Memo;
            this.StatusNames = KVConstHelper.GetInstance().GetAllValue<Biz.KVProjectStatus>();
        }

        public void BeginEdit()
        {
            //throw new NotImplementedException();
        }

        public void CancelEdit()
        {
            //throw new NotImplementedException();
        }

        public void EndEdit()
        {
            //这里可以增加一些输入校验
            //最好在这里激发一个事件，在外面进行更新，这次省点事，直接在这里解决了
            DataAccess.DaCommon<DataAccess.Entity.Project>.Update(
                new DataAccess.Entity.Project {Key=this.Key,Name=this.Name,StartDate=this._StartDate,
                                               ContractSum = this.ContractSum,
                                               EndDate = this._EndDate,
                                               Sum = this.Sum,
                                               Status = Convert.ToInt32(this.Status),
                                               Memo=this.Memo
                });
        }
    }
}
